// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/ozone/platform/drm/gpu/page_flip_request.h"

namespace ui {

PageFlipRequest::PageFlipRequest(int crtc_count,
    const SwapCompletionCallback& callback)
    : callback_(callback)
    , crtc_count_(crtc_count)
{
}

PageFlipRequest::~PageFlipRequest()
{
}

void PageFlipRequest::Signal(gfx::SwapResult result)
{
    if (result == gfx::SwapResult::SWAP_FAILED)
        result_ = gfx::SwapResult::SWAP_FAILED;
    else if (result != gfx::SwapResult::SWAP_ACK)
        result_ = result;

    if (!--crtc_count_) {
        callback_.Run(result_);
        callback_.Reset();
    }
}

} // namespace ui
